處理串列的過程,都是為了未來讓機器了解人類語言的基礎唷!讓我們繼續看下去!Licensed by Adobe Stock
Meiko:「對了,Jason 你上次有用到for-loop
和range
的用法,我覺得串列,好像應該也可以和 for-loop 放在一起用耶,比如說,我想要一個個的把歌手名字印出來,要怎麼做? 」
Jason:「的確,上次用for-loop
和range
(可以看Day-4 想省時?讓程式幫你做重複的事情!學會 for- loop 迴圈的概念(上)複習一下),我主要是想讓你熟悉,range()
的用法,用數字序列的方式,幫助你了解串列的內容。現在你對串列比較了解了,我們可以用另外一個方式,來讀出串列裡面的內容。像這樣
for singer in singerName:
print (singer)
Jason :「你看唷,for
後面的singer
是個變數,可以自己任意設定名稱,就像你自己定義一個串列名稱singerName
一樣。」
Meiko :「這麼有彈性,那我來用之前印出星期一到星期日的那個串列當例子看看,我的串列名稱是 weekName
,那變數這個位置我就用whichDay
好了,代表說印出來就知道是哪一天了!」
for whichDay in singerName:
print (whichDay)
Meiko:「嘿嘿,印出來就跟我想的一樣!」
Jason:「沒錯!那我再介紹你另外一個方式,你看現在只把串列裡面的內容印出來,你可能還會想要知道它的順序,這個時候你就可以用
for index, whichDay in singerName:
print (index, whichDay)
你看,舉例來說現在在『星期一』就有一個數字 0,代表index
順序。」
Meiko:「歐,原來串列裡面,就有數字index
的順序在裡面的含義。」
Jason:「對啊,如果你不想要多用一個index
當順序,其實你也可以直接用
for whichDay in enumerate(weekName):
print (whichDay)
Meiko:「這好像跟前面我寫過的這段蠻像的
for whichDay in weekName:
print (whichDay)
Jason:「對啊,差別只多了一個enumerate
這個字,你現在也知道有enumerate
,之後,你除了拿到串列裡面的值之外,也得到它的index
。就是用 0,1,2,3,4 … 這樣的資訊,就好像資料排排站,跟你報告他們是排在第幾號!」
Meiko:「既然串列list
這麼好用,我剛想到,有沒有可能把我讀到的一段文字,放到串列裡面?」
Jason:「可以啊,比如說?」
Meiko:「像這段,“When you marry the right woman, you are COMPLETE. When you marry the wrong woman, you are FINISHED. And when the right one catches you with the wrong one, you are COMPLETELY FINISHED.”」(娶對老婆,你一輩子就圓滿了。娶錯老婆,你一輩子就玩完了。當對的老婆抓到你和小三, 你就完全玩完了)
Jason:「哇,這還蠻好笑的,話說,Complete 和 Finish 字面上雖然都是完成的意思,但看完這段解釋,就很有畫面!」
Meiko:「就是這段讓人印象深刻,所以才想說讓你做做看!」
Jason:「你可以先把這段文字 Assign 到一個變數,我把它叫diff_complete_finish
,它用來儲存這段文字
diff_complete_finish="When you marry the right woman, you are COMPLETE. When you marry the wrong woman, you are FINISHED. And when the right one catches you with the wrong one, you are COMPLETELY FINISHED."
diff_list = diff_complete_finish.split()
print (diff_list)
Meiko:「所以split()
是根據什麼來分開上面那段文字的呀?」
Jason:「.split()
函式預設 Python 會去把這個字串的空白做切割,如果你把split()
裡面換成逗號 『,』 的話,程式就會根據逗號去切割,像這樣
diff_list = diff_complete_finish.split(',')
print (diff_list)
Meiko:「Jason,所以這兩個例子,看起來我學會了字串的分割可以用.split()
的函式,而且還可以用不同方式去切割,比如說『空白』或是『,』耶!」
Jason:「對啊,用程式很方便對吧?只要一行,完全不需再用人眼去做這些重複的工作!這些技巧會是在做文字探勘或是自然語言處理(Natural Language Processing, NLP)的基礎唷!」
Meiko:「哈,講人話!自然語言是人類的語言嗎? Anyway,我好像又前進了一大步了!」
我大寶寶~拉,今天把所有的list
的操作講完,相對來說這幾天的內容比較生硬一些,幫大家複習一下這兩天的內容,我們學了串列中數字的排序、字母的排序以及for-loop
及串列的關係,最後我們看了一個串列在文字探勘的應用,這些都是未來在做網路爬蟲、文字探勘、自然語言的基礎,把今天學會的技巧實際演練一次,從自己關注的內容下手,才能學得又快又好唷!
歡迎登入留言跟我分享你的想法唷!(登入不麻煩,點一下 FB 登入就可以留言了!)
1.喜歡這樣方式學 Python 的朋友請留言『+1』
2.如果前面的內容忘記了,趕快看一下大寶寶這一系列的看對話學 Python 資料分析,用情境故事帶你入門的列表!就能夠繼續 Happy Coding 囉!